//
//  ReadMe.swift
//  新浪微博---01次
//
//  Created by 李宗帅 on 16/5/3.
//  Copyright © 2016年 LS. All rights reserved.
//

import UIKit

/*
*  快捷键: 截取模拟器的屏幕图片 commad + s  用于上传AppStroe的截图
*
*  http://www.devdiv.com 论坛里边的开发资料  以后工作了每天一定要有固定的时间去学习
*
*
*  面试题:
* 1.面向对象的三大特性 :  封装  继承   多态
*
* 2.UIButtom的父类:  UIControl
* 3.单例对象的设计模式
* 4.了解控制器的生命周期,尤其是viewDidLoad和viewDidAppear (重点!)
* 5.约束动画,不是frame动画  需要调用下layoutIfNeeded
* 6.通知和代理的区别 
*   代理或者闭包: 一对一
* 7.layer与view

*   一,UITabBarViewController 
* 1.创建好子控制器之后,直接添加进去
* 2.优先把特殊情况排除.实现正常的效果,然后再思考特殊情况
* 3.



*    问题:中间的按钮和其他的4个不一致:  
*        1.添加一个按钮
*        2.设置item的位置
*        3.添加点击事件
*        4.颜色的渲染


*    二,访客视图
*    1,消息,发现,设置这三个界面一样,同一个视图
*    2,首页和消息有一点差别/首页多了一个转动,如果首页没有转动,这四个都一样
*    3,自定义三部曲1<重写initframe方法  2<懒加载控件  3<添加子控件 设置约束



*    三,oauth认证
*    1.显示一个web页面  也就是给需要的服务器发送一个请求获取到
*    2,在web页面里输入用户名和密码   
*    3.服务器会返回一个URL  里边包含一个Code
*    4,截取到里边的code
*    5,获取到code 通过AFN请求,把code发送给微博服务器 换区token
*    6,有了token之后,就可以访问有限的资源


*    问题(我们要做什么):
*    1.需要在UIWebView里展示一个URL,
*    2.如何拿到包含code的url
*    3.





*    四,接口文档
*    1.先了解接口文档的作用
*    2.需要知道URL
*    3.需要知道请求方式
*    4.请求的参数(重点看)
*    5,返回的参数
*    6.示例


*   五,申请成为一个开发者
*   1.登录open.weibo.com
*   2.点击我的应用,完善个人资料
*   3.登录注册邮箱,完成验证
*   4.一分钟之后,退出再登录就可以添加应用



*   六,添加应用
*   1.选择 添加应用 的 移动应用
*   2.完善应用信息
*   3.记录一些重要信息(appKey/appSecrect)
*   4.设置请求回调页面(设置的页面一定要和授权的参数一致)
*   5.添加测试账号



*   七,


*   八, 归档和接档
    1.遵守了NScoding协议


*   九,用户把获取的modele 进行归档
    1.把modele赋值给viewModel
    2.当我们把程序关掉,重新运行的时候,需要在viewModel初始化的时候,让userAccout读取数据
    3.可以通过Viewmodel里的

*   十,欢迎界面  
    1.先分析视图
    2.添加视图
    3.实现功能

*   十一,界面切换流程
    2种
    第一种:1>没有登录的时候,第一次运行是访客视图  2>点击注册   3>注册完成跳转到欢迎界面 4>跳转到首页
    第二种:1>登录授权之后运行  2>直接欢迎界面  3>跳转到首页

*   十二,首页数据
    1.自动计算行高

*   十三   1.所有的微博都是转发微博
*         2.有的微博并不是转发微博,让转发微博视图消失,就是原创微博
*         3.让转发微博的View高度为0,修改footView的顶部约束,原创 footer的底对齐原创的顶
*         4.约束重用的问题,设置一个全局的约束,每当cell放进缓存池的时候,解除微博,再使用的时候根据类型再绑定约束


*   十四  配图的实现思路
*   1.用UICollectionView 实现
    2.根据视图的数量,来判断配图视图的大小




具体怎么做？
1.让所有的原创微博，都显示一个配图视图（配图视图的大小不用考虑，先固定大小）
2.原创微博，有配图的显示配图，没有配图的隐藏配图
3. 当没有配图的时候，原来的配图隐藏了，但是 配图的高度还在
4. 如果说 没有配图的微博 高度 = orginalView的底部和 contentLabel的底部对齐
如果说 有配图的微博 高度 = orginalView的底部和 picView的底部对齐




十五、转发微博实现配图

1. 让所有的转发微博都有配图视图
2. 根据数据，让没有配图的微博，隐藏配图
3. 隐藏了没有配图的微博，但是配图还在自动计算行高之内
4. 修改自动计算行高的规则
当没有配图的时候， retweetView的底部和 contenetLabel的底部对齐，这样 高度 = contentLabel的高度
当有配图的时候， retweetView的底部和 picView的底部对齐， 这样 高度 =
contentlabel的高度 + picView的高度

十六、设置单张图片显示的大小 -- 在实际企业开发过程中，是由服务器返回给我们图片大小，并不是通过我们先下载图片，再设置图片的

1.把有一张图片的微博图片下载下来
2.返回一张图片的大小，先找到我们下载完成的图片，然后再返回 图片的实际大小
3.如果我们下载的图片没有找到，默认返回一个固定的宽高

十七、下拉刷新
1.下拉刷新模仿系统的来写。UIRefreshControl,自定义继承自 UIControl
2. 自定义创建一个视图之后，添加到 tableView里
3. 模仿系统 下拉刷新，给他一个默认的宽高
4. 自定的view的位置不对,然后修改了他的y值
5.添加其他空间
6. 给 tableView添加 KVO 监听 contentOffset 的改变
7.分析逻辑，分析来出 几种状态 ： 三种状态
1.【我拖拽UIScollView】正常状态
2.【我拖拽UIScollView】释放更新的状态
3.【达到释放更新的状态的时候，我松手了】加载
8.分析出 拖拽
9.


*   十八
*   需求,更新完文博之后,需要给用户一个提示
*   难点:在哪里出来
*   解决办法:分析视图的层次结构
*   重要程度:低
*


*   十九
*   pop视图
*   点击加号按钮,弹出一个视图,要求是,背景为当前微博显示界面的毛玻璃效果,能够通过动画展示我们的界面
*   难点:1>获取当前显示微博的图片
*        2> 毛玻璃效果
*        3> 自定义按钮
*        4>按钮的布局
*        5,Pop动画
*        6>视图跳转
*    解决  1.先显示一个view 设置大小
*


*  二十一
*  底部视图分析
*  底部有一个可以点击的视图
*  1.一个View里放5个按钮  2.UIToolBar
*  难点: 视图随着键盘移动
*  解决方法:
*  重要程度: ***

*  二十二
*  需求:展示一个九宫格的视图
*  转换思路: UICollectionView
*  1>先创建一个CollectionView
*  2>实现九宫格 遵守协议  设置大小和间隔
*  3>自定义cell  添加一个imageView在里边
*  4>数据源处理
*  5>添加按钮 实现删除效果

*
*/